package com.joolun.system.domain;

import com.joolun.common.annotation.Excel;
import com.joolun.common.core.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 支付参数对象 pay_param
 * 
 * @author joolun
 * @date 2025-07-07
 */
@Data
public class PayParam extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Long id;

    /** 功能码 */
    @Excel(name = "功能码")
    private String funcode;

    /** 接口版本号 */
    @Excel(name = "接口版本号")
    private String version;

    /** 商户应用唯一标识 */
    @Excel(name = "商户应用唯一标识")
    private String appId;

    /** 商户订单号 */
    @Excel(name = "商户订单号")
    private String mhtOrderNo;

    /** 现在支付子商户号 */
    @Excel(name = "现在支付子商户号")
    private String mhtSubMchid;

    /** 商户商品名称 */
    @Excel(name = "商户商品名称")
    private String mhtOrderName;

    /** 商户交易类型：01 普通消费 */
    @Excel(name = "商户交易类型：01 普通消费")
    private String mhtOrderType;

    /** 商户订单币种类型：156 人民币 */
    @Excel(name = "商户订单币种类型：156 人民币")
    private String mhtCurrencyType;

    /** 商户订单交易金额：单位(人民币)：分 */
    @Excel(name = "商户订单交易金额：单位(人民币)：分")
    private Long mhtOrderAmt;

    /** 商户订单详情 */
    @Excel(name = "商户订单详情")
    private String mhtOrderDetail;

    /** 商户订单超时时间：60~3600 秒，默认 3600 */
    @Excel(name = "商户订单超时时间：60~3600 秒，默认 3600")
    private Integer mhtOrderTimeOut;

    /** 商户订单开始时间 */
    @Excel(name = "商户订单开始时间")
    private String mhtOrderStartTime;

    /** 商户后台通知 URL */
    @Excel(name = "商户后台通知 URL")
    private String notifyUrl;

    /** 商户前台通知 URL */
    @Excel(name = "商户前台通知 URL")
    private String frontNotifyUrl;

    /** 商户字符编码 */
    @Excel(name = "商户字符编码")
    private String mhtCharset;

    /** 设备类型 */
    @Excel(name = "设备类型")
    private String deviceType;

    /** 用户所选渠道类型：12=支付宝，13=微信，25 手机 QQ (仅支持 outputType=0)，11 银联(仅支持 outputType=1) */
    @Excel(name = "用户所选渠道类型：12=支付宝，13=微信，25 手机 QQ (仅支持 outputType=0)，11 银联(仅支持 outputType=1)")
    private String payChannelType;

    /** 商户保留域 */
    @Excel(name = "商户保留域")
    private String mhtReserved;

    /** 输出格式：0 直接调起支付，1 返回支付凭证 */
    @Excel(name = "输出格式：0 直接调起支付，1 返回支付凭证")
    private String outputType;

    /** 商户 appId：outputType=1 且paychannelType=13 或 11 时必传，值为微信公众平台的开发者ID */
    @Excel(name = "商户 appId：outputType=1 且paychannelType=13 或 11 时必传，值为微信公众平台的开发者ID")
    private String mhtSubAppId;

    /** 消费者 ID：outputType=1 必填，值为用户关注，公众号后的 openid，当渠道类型为 11 时，不填写 */
    @Excel(name = "消费者 ID：outputType=1 必填，值为用户关注，公众号后的 openid，当渠道类型为 11 时，不填写")
    private String consumerId;

    /** 是否支持信用卡支付 */
    @Excel(name = "是否支持信用卡支付")
    private String mhtLimitPay;

    /** 商品标记 */
    @Excel(name = "商品标记")
    private String mhtGoodsTag;

    /** 商户签名方法: 定值：MD5 */
    @Excel(name = "商户签名方法: 定值：MD5")
    private String mhtSignType;

    /** 商户数据签名 */
    @Excel(name = "商户数据签名")
    private String mhtSignature;

    /** 主体id */
    @Excel(name = "主体id")
    private String corpId;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setFuncode(String funcode) 
    {
        this.funcode = funcode;
    }

    public String getFuncode() 
    {
        return funcode;
    }
    public void setVersion(String version) 
    {
        this.version = version;
    }

    public String getVersion() 
    {
        return version;
    }
    public void setAppId(String appId) 
    {
        this.appId = appId;
    }

    public String getAppId() 
    {
        return appId;
    }
    public void setMhtOrderNo(String mhtOrderNo) 
    {
        this.mhtOrderNo = mhtOrderNo;
    }

    public String getMhtOrderNo() 
    {
        return mhtOrderNo;
    }
    public void setMhtSubMchid(String mhtSubMchid) 
    {
        this.mhtSubMchid = mhtSubMchid;
    }

    public String getMhtSubMchid() 
    {
        return mhtSubMchid;
    }
    public void setMhtOrderName(String mhtOrderName) 
    {
        this.mhtOrderName = mhtOrderName;
    }

    public String getMhtOrderName() 
    {
        return mhtOrderName;
    }
    public void setMhtOrderType(String mhtOrderType) 
    {
        this.mhtOrderType = mhtOrderType;
    }

    public String getMhtOrderType() 
    {
        return mhtOrderType;
    }
    public void setMhtCurrencyType(String mhtCurrencyType) 
    {
        this.mhtCurrencyType = mhtCurrencyType;
    }

    public String getMhtCurrencyType() 
    {
        return mhtCurrencyType;
    }
    public void setMhtOrderAmt(Long mhtOrderAmt) 
    {
        this.mhtOrderAmt = mhtOrderAmt;
    }

    public Long getMhtOrderAmt() 
    {
        return mhtOrderAmt;
    }
    public void setMhtOrderDetail(String mhtOrderDetail) 
    {
        this.mhtOrderDetail = mhtOrderDetail;
    }

    public String getMhtOrderDetail() 
    {
        return mhtOrderDetail;
    }
    public void setMhtOrderTimeOut(Integer mhtOrderTimeOut) 
    {
        this.mhtOrderTimeOut = mhtOrderTimeOut;
    }

    public Integer getMhtOrderTimeOut() 
    {
        return mhtOrderTimeOut;
    }
    public void setMhtOrderStartTime(String mhtOrderStartTime) 
    {
        this.mhtOrderStartTime = mhtOrderStartTime;
    }

    public String getMhtOrderStartTime() 
    {
        return mhtOrderStartTime;
    }
    public void setNotifyUrl(String notifyUrl) 
    {
        this.notifyUrl = notifyUrl;
    }

    public String getNotifyUrl() 
    {
        return notifyUrl;
    }
    public void setFrontNotifyUrl(String frontNotifyUrl) 
    {
        this.frontNotifyUrl = frontNotifyUrl;
    }

    public String getFrontNotifyUrl() 
    {
        return frontNotifyUrl;
    }
    public void setMhtCharset(String mhtCharset) 
    {
        this.mhtCharset = mhtCharset;
    }

    public String getMhtCharset() 
    {
        return mhtCharset;
    }
    public void setDeviceType(String deviceType) 
    {
        this.deviceType = deviceType;
    }

    public String getDeviceType() 
    {
        return deviceType;
    }
    public void setPayChannelType(String payChannelType) 
    {
        this.payChannelType = payChannelType;
    }

    public String getPayChannelType() 
    {
        return payChannelType;
    }
    public void setMhtReserved(String mhtReserved) 
    {
        this.mhtReserved = mhtReserved;
    }

    public String getMhtReserved() 
    {
        return mhtReserved;
    }
    public void setOutputType(String outputType) 
    {
        this.outputType = outputType;
    }

    public String getOutputType() 
    {
        return outputType;
    }
    public void setMhtSubAppId(String mhtSubAppId) 
    {
        this.mhtSubAppId = mhtSubAppId;
    }

    public String getMhtSubAppId() 
    {
        return mhtSubAppId;
    }
    public void setConsumerId(String consumerId) 
    {
        this.consumerId = consumerId;
    }

    public String getConsumerId() 
    {
        return consumerId;
    }
    public void setMhtLimitPay(String mhtLimitPay) 
    {
        this.mhtLimitPay = mhtLimitPay;
    }

    public String getMhtLimitPay() 
    {
        return mhtLimitPay;
    }
    public void setMhtGoodsTag(String mhtGoodsTag) 
    {
        this.mhtGoodsTag = mhtGoodsTag;
    }

    public String getMhtGoodsTag() 
    {
        return mhtGoodsTag;
    }
    public void setMhtSignType(String mhtSignType) 
    {
        this.mhtSignType = mhtSignType;
    }

    public String getMhtSignType() 
    {
        return mhtSignType;
    }
    public void setMhtSignature(String mhtSignature) 
    {
        this.mhtSignature = mhtSignature;
    }

    public String getMhtSignature() 
    {
        return mhtSignature;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("funcode", getFuncode())
            .append("version", getVersion())
            .append("appId", getAppId())
            .append("mhtOrderNo", getMhtOrderNo())
            .append("mhtSubMchid", getMhtSubMchid())
            .append("mhtOrderName", getMhtOrderName())
            .append("mhtOrderType", getMhtOrderType())
            .append("mhtCurrencyType", getMhtCurrencyType())
            .append("mhtOrderAmt", getMhtOrderAmt())
            .append("mhtOrderDetail", getMhtOrderDetail())
            .append("mhtOrderTimeOut", getMhtOrderTimeOut())
            .append("mhtOrderStartTime", getMhtOrderStartTime())
            .append("notifyUrl", getNotifyUrl())
            .append("frontNotifyUrl", getFrontNotifyUrl())
            .append("mhtCharset", getMhtCharset())
            .append("deviceType", getDeviceType())
            .append("payChannelType", getPayChannelType())
            .append("mhtReserved", getMhtReserved())
            .append("outputType", getOutputType())
            .append("mhtSubAppId", getMhtSubAppId())
            .append("consumerId", getConsumerId())
            .append("mhtLimitPay", getMhtLimitPay())
            .append("mhtGoodsTag", getMhtGoodsTag())
            .append("mhtSignType", getMhtSignType())
            .append("mhtSignature", getMhtSignature())
            .toString();
    }
}
